package Arrays;

/**
 * 作者:hfj
 * 功能:202.快乐数
 * 日期: 2025/10/23 18:46
 */
public class IsHappy {
    public static void main(String[] args) {
        int n = 19;
        System.out.println(isHappy(n));
    }

    /***
     * 给一个任意整数，每一位的平方大不了最多就是9x9=81呗，整数最多10位数，而且十位数的时候第一位是2，
     * 就算他是9，那平方和也就是81x10=810撑死了，就算你一直循环进行平方和，大不了把这810个数字全部占了一遍，最多也不会超过810次，所以循环810次就够了。
     * @param n 输入参数
     * @return
     */
    public static boolean isHappy(int n) {

        int i = 1;
        while (i <= 811){
            int sum = 0;
            while (n > 0){
                int l = n % 10;
                sum += l * l;
                n /= 10;
            }
            if (sum == 1){
                return true;
            }
            n = sum;
            i++;
        }
        return false;
    }
}
